package org.design.singletonPattern;

/**
 * SingletonPattern
 * 单例模式（Singleton Pattern）是 Java 中最简单的设计模式之一。
 * 这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。
 * 这种模式涉及到一个单一的类，该类负责创建自己的对象，同时确保只有单个对象被创建。
 * 这个类提供了一种访问其唯一的对象的方式，可以直接访问，不需要实例化该类的对象。
 * 单例模式是一种创建型设计模式，它确保一个类只有一个实例，并提供了一个全局访问点来访问该实例。
 * 注意：
 * 1、单例类只能有一个实例。
 * 2、单例类必须自己创建自己的唯一实例。
 * 3、单例类必须给所有其他对象提供这一实例。
 *
 * @author 樊温军
 * @date 2025/6/11 上午10:08
 */
public class SingletonPattern {

    public static void main(String[] args) {
        // 懒汉式，线程不安全
        IdlerSingleton1 idlerSingleton1 = IdlerSingleton1.getInstance();
        // 懒汉式，线程安全
        IdlerSingleton2 idlerSingleton2 = IdlerSingleton2.getInstance();
        // 饿汉式
        HungrySingleton hungrySingleton = HungrySingleton.getInstance();
        // 登记式/静态内部类
        RegisterSingleton registerSingleton = RegisterSingleton.getInstance();
        // 双重校验锁/线程安全
        DclSingleton dclSingleton = DclSingleton.getSingleton();
        // 枚举
        EnumSingleton enumSingleton = EnumSingleton.INSTANCE;
    }
}
